さて、カーネルの再構築に関して、具体的な手順を説明したいと思います。
ここでは、FreeBSDにルーター機能を追加する手段として「natd」を使用したいと考えてます。
これには「IPFIREWALL」や「IPDIVERT」といった機能を、まず最初にカーネルに組み込む必要が出てきます。
そして、これ以降「UNIXの操作がある程度可能」ということを前提に話を進めていきます。
「rootユーザーでログイン」
「[/usr/src/sys]ディレクトリに移動」
多少は説明しますが、こういった事が理解できないのであれば、これからは進む事は不可能です。
インストールされたばかりのホヤホヤなFreeBSDをいじって、
時には起動不可能にして再インストールしつつ、トレーニングしてから戻って来てください。
…え、カーネルのソースをインストールするのを忘れた?
そんな方はこちらを見てください。
まず、rootとしてログインしてください。
カーネルはシステムの根底に関わる部分であり、基本的にrootユーザーで操作します。
この[Server]の部分には、あなたのPCのホスト名が表示されると思います。
各自、自分のサーバーに合ったように読み替えてください。
さて、早速カーネルの設定をしていきたいと思います。
カーネルのソースは[/usr/src/sys]以下にインストールされています。
しかし、それはすっ飛ばして、[/usr/src/sys/i386/conf]まで一気に移動します。
Server# cd /usr/src/sys/i386/conf |
ちなみに、ルートディレクトリよりシンボリックリンク(ショートカット)が張られているので、
Server# cd /sys/i386/conf |
でもいいです。
このディレクトリの中身を一度[ls]で見てみましょう。
「GENERIC」「LINT」の2つのファイルが存在していると思います。
この中の「GENERIC」とは、今使用しているはずのカーネル…GENERICカーネルの設定ファイルです。
この設定を元にGENERICカーネルは構築されています。
そして「LINT」ファイルには、カーネル構築時に指定できる設定の全てが記載されています。
どういった設定がどれに対応しているかといった説明文も書かれています。
一度暇があったら読んでみてもいいでしょう。
ここでは、この「GENERIC」を使用して、自分に合ったカーネルを再構築します。
しかしいきなり「GENERIC」ファイルの設定に入るのはいただけません。
このファイルは保存しておくべきであって、手を加えるファイルではないからです。
ここで、まず自分のカーネル用には、新たな設定ファイルを用意します。
といっても、GENERICファイルをコピーするだけなのですが。
Server# cp GENERIC MYKERNEL |
これからはこの「MYKERNEL」を編集して、設定を進めていきます。
(このMYKERNELは好きな名前でいいです。今回は一般的なものとしてMYKERNELと名づけました)
使用するエディタは「vi」でも「ee」でも結構です。
緋色は「vi」を使用します。使い慣れているため、色々と便利なので。
そしてカーネル設定に入ります。
NATDのために追加しなければならない必要最低限の項目は2行のみ。
ついでに修正してある行は2箇所のみです。
他のほとんどが「#」マークを付けてコメントアウトすればいいだけなのですが
その量が兎に角多いです。
ここで注意しなければいけない部分だけスポット的に説明して、
他は実際に緋色が使用しているカーネル設定をアップしますので、それを見てください。
ついでに「GENERIC」も置いておきます。余裕があれば対比して見て下さい。
→MYKERNEL
→GENERIC
…いやはや、多いですねぇ(ぉ)。
お、無線LANである「IEEE802.11b」にも対応してるんだ…とか、見てみてもいいと思います。
MYKERNELにおけるコメントアウトぶりは壮観だと思います。
ハードウェアとして存在していても、サーバーとして運用する上で不要と思ったものは
すべてコメントアウトしてドライバを外してあります。(FDDやUSBやマウス)
これを緋色はコメントアウトの美学と(勝手に)呼んでます。(ぉ
ネットワークカード(LANカード)に関しては、自分が使用するもの以外、完全にコメントアウトしております。
ここまで極端にする必要はないといえば無いのですが…。
とうぜん、ここではきちんと自分が使用しているLANカードに合わせて設定して下さい。
→自分のPCのLANカードのドライバの確認はこちらへ
では、「追加する項目」に関して説明していきたいと思います。
options IPFIREWALL
options IPDIVERT |
少し下のほうに、この2行が見つかると思います。
この2行は「GENERIC」には書かれてない設定であり、新たに追加した設定でもあります。
これこそが、「FreeBSDをNATDルーターとして使用するために必要な設定」であり、
その他は一切設定変更なしでもルーターは作成出来ます。
なので、他の設定は説明しません。
いつか機会を見つけて、詳しく説明したいと思っています…
設定を終了したと思ったら、保存後、以下のコマンドを実行します。
そうすると
Don't forget to a ''make depend''
kernel build directory is ../../compile/MYKERNEL |
以上のメッセージが表示されたと思います。
まず最初に[make depend]を実行する事を忘れないようにとメッセージが出ますが、
これを実行するのは、カーネルを実際に作成するディレクトリに移動してからです。
MYKERNELの設定を間違うと、この時点でエラーメッセージが出て
どの行に間違いがあるかを教えてくれます。
このメッセージが表示されるまで、エラーがなくなるように修正しましょう。
なお、MYKERNELに関して、設定途中どうしても取り返しのつかない様な状況に陥ったら、
Server# cp GENERIC MYKERNEL |
としてやり直しましょう。
ある意味、ここが本題です。
今、おそらく[/usr/src/sys/i386/conf]のディレクトリにいると思います。
Server# cd ../../compile/MYKERNEL |
メッセージどおり、カーネルを作成するディレクトリに移動します。
これは相対指定であって、絶対指定の場合、
Server# cd /usr/src/sys/compile/MYKERNEL |
になります。
そして説明されたとおり、[make depend]を実行します。
これはカーネルの依存関係を更新するコマンドであり、必ず実行します。
これには結構時間が掛かると思います。
プロンプトが表示されるまで待ちましょう。
依存関係の更新が終わると、ついにコンパイルです。実際にカーネルを作成します。
これもかなり時間がかかります。
なお、MYKERNELの設定を間違うと、ここでエラーが出たりましす。
その場合、文法エラーでなく、外してはいけないドライバを外してしまっている可能性が多いので、
戻ってMYKERNELの設定確認、修正を行いましょう。
MYKERNELの設定を変更したら、必ず「config]からやり直してください。
エラーもなく無事makeが完了すると、とうとうインストールです。
作成したカーネルが無事に動作してくれる事を祈りつつ実行です。
インストール完了!
さて新たな自分専用カスタムカーネルの作成が成功したのかどうか、
システムを再起動して確かめないといけません。
…でも、その前に最後に忘れてはいけない事があります。
きちんとお掃除して後始末をしておきます。
これを終えたら、
と実行して再起動です。
でもいいです。お好きな方をどうぞ。
カーネル構築時の、ちょっとした便利な豆知識を紹介しておきます。
カーネルを再構築する時、
[make depend]をして[make]をして[make install]
このたびに終了を待ってコンソールから入力したのはめんどくさいと思いませんでしたか?
そんな貴方には一発実行方法を説明します。
Server# make depend & make & make
install |
「&」で繋げただけですが、こうすると、インストールまで全て自動でやってくれます。
もしくは「;(セミコロン)」で。
Server# make depend ;make ;make install |
単純だけど、覚えておくと便利です。
カーネル再構築には非常に時間が掛かります。
バージョン3をメインで使用していた頃、バージョン4で初めてカーネルの再構築をして、
あまりの所要時間の増加に驚いた記憶があります。
調べるとすぐに分かりましたが、カーネルを構築する時、
「カーネル」と「カーネルに組み込まなかったドライバを全てモジュール化して作成」しているからでした。
もちろん、モジュール化できない機能に関してはモジュール化されませんが。
FreeBSD4では、モジュールを動的に組み込む機能はありません。
ついでに言うと、今回NATDルーターで必要な機能はモジュールで追加できないため、
全部カーネルに組み込んであります。
…実のところモジュールは使用しないという結論に達します。
あらかじめ「モジュールを使用しない」と決めているのであれば、
カーネルを作成する時に、モジュールの作成を飛ばせます。
Server# make kernel-depend |
Server# make kernel-install |
Server# make kernel-clean |
…ということで、見た通りの内容です。
これ以外の手順はすべて同じです。
どれだけの機能をカーネルから外しているかにもよりますが、
今までの[make]と比べて、ものすごい速さで終了すると思います。
練習等の理由で何度もカーネル設定を微調整して再構築したいけど、
そのたびにモジュールまで作成するのが邪魔だと思った人は使用してみてください。
一番簡単な方法を説明します。
まず、rootとしてログインします。
その後、インストールに使用したFreeBSDのCD-ROM(1枚目)をCDドライブにセットした後、
[/stand/sysinstall]を実行します。
メニューが起動したら「Configure」→「Distributions」→「src」→「sys」の順に選択します。
この選択を終えると「sys」の前に[X]マークが表示されるので、「Exit」を2回選択します。
最後にインストールするメディアを指定するように言われるので、
一番上の[CD/DVD]を選択して実行です。
[一つ上に戻る] |